package com.test.application.practice.string;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 描述: TODO
 * 作者: yanruizhi
 * 时间: 2024/8/5 19:59
 */
public class Practice02 {
    /*
输入一串小写字母(az)组成的字符串，统计字符串中相同字符出现的次数，并按字典序输出字符及其出现次数。
例如：输入字符串"babcc"输出"a1b2c2"、输入字符串“dedffg"”,输出“d2e1f2g1”
*/
    public static String countCharacters(String input) {

        Map<Character, Integer> charCountMap = new HashMap<>();

        // 统计每个字符出现的次数
        for (char c : input.toCharArray()) {
            charCountMap.put(c, charCountMap.getOrDefault(c, 0) + 1);
        }

        // 将字符按照字典序排序
        List<Map.Entry<Character, Integer>> sortedEntries = new ArrayList<>(charCountMap.entrySet());
//        sortedEntries.sort(Map.Entry.comparingByKey());

        StringBuilder result = new StringBuilder();
        for (Map.Entry<Character, Integer> entry : sortedEntries) {
            result.append(entry.getKey()).append(entry.getValue());
        }

        return result.toString();
    }

    public static void main(String[] args) {
        String input = "aaaazzzbabcc";
        System.out.println(countCharacters(input)); // 输出: "a1b2c2"

        input = "dedfdddfg";
        System.out.println(countCharacters(input)); // 输出: "d2e1f2g1"
    }


}
